package controlador;


import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

import modelo.entidad.Inmueble;
import modelo.entidad.Anuncio;

import modelo.hibernate.dao.DaoAnuncio;
import modelo.hibernate.dao.DaoInmueble;

public class DaoTest {
	
	
	
	//private DaoProfesor dao = new DaoProfesor();
	//private DaoEstado daoest = new DaoEstado();
	private DaoAnuncio daop = new DaoAnuncio();
	private DaoInmueble daoin = new DaoInmueble();
//	private DaoCorreoElectronico daoEmail=new DaoCorreoElectronico();
	public static void main (String[] args){
		
		
		//new DaoProfesorTest().testAgregarProfesor();
		
		//new DaoProfesorTest().testObtenerUnProfesor(1); 
	   // new DaoProfesorTest().testObtenerProfesores();
		//new DaoTest().testObtenerInmuebles(); 
		new DaoTest().testObtenerAnuncios(); 
		
	 //   new DaoProfesorTest().testObtenerEstado();
		
	 // new DaoTest().testObtenerProfesoresnoDuplicados();
	    //new DaoProfesorTest().testObtenerProfesoresLazy();
	}
	
	
	public void testObtenerInmuebles(){
		try {
			List<Inmueble> lista = daoin.obtenerTodos();
			System.out.println("Datos del Inmueble:");
			for (Inmueble inm : lista){
				System.out.println(inm.getDireccion());
				System.out.println(inm.getPrecio());
				System.out.println(inm.getTipooperacion());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void testObtenerAnuncios(){
		try {
			List<Anuncio> lista = daop.obtenerTodos();
			System.out.println("Datos del Anuncio:");
			for (Anuncio anu : lista){
				System.out.println(anu.getFechapublicacion());			
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/*
	public void testAgregarProfesor(){
		Profesor profesor1=new Profesor("Gerana", "Espinoza", "Cabudare");
		List<CorreoElectronico> emails=new ArrayList<>();
		emails.add(new CorreoElectronico("gespinoza@yahoo.com",profesor1));
		emails.add(new CorreoElectronico("gespinoza@hotmail.com",profesor1));
		emails.add(new CorreoElectronico("espinozagerana@gmail.com",profesor1));
		profesor1.setCorreosElectronicos(emails);
		
		
		Profesor profesor2=new Profesor("Deyanireth", "Duarte", "Barquisimeto");
		List<CorreoElectronico> correosElectronicos=new ArrayList<>();
		correosElectronicos.add(new CorreoElectronico("dduarte@yahoo.com",profesor1));
		correosElectronicos.add(new CorreoElectronico("duartedd@gmail.com",profesor1));		
		profesor2.setCorreosElectronicos(correosElectronicos);
		
		try {
			dao.agregarProfesor(profesor1);
			dao.agregarProfesor(profesor2);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public void testObtenerUnProfesor(int idProfesor){
		try {
			Profesor prof=dao.obtenerProfesor(idProfesor);
			System.out.println(prof.getNombre());
			System.out.println(prof.getApellido());
			System.out.println(prof.getDireccion());
			System.out.println("Emails:");
			List<CorreoElectronico> listaEmail =prof.getCorreosElectronicos();			
			for (CorreoElectronico l : listaEmail){
				System.out.println(l.getEmail());
			}
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	*/

/*
	public void testObtenerEstado(){
		try {
			List<Estado> lista = daoest.obtenerTodos();
			System.out.println("Datos del Profesor:");
			for (Estado est : lista){
				System.out.println(est.getNombre());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	*/
	/*
	public void testObtenerProfesoresnoDuplicados(){
		try {
			List<Profesor> lista = dao.obtenerTodos();
			Set<Profesor> profesores = new LinkedHashSet<Profesor>(lista);			
			Iterator it = profesores.iterator(); 
			
			System.out.println("Datos del Profesor:");			
			while (it.hasNext()) {
	            Profesor prof = (Profesor) it.next();
	            System.out.println(prof.getNombre());
				System.out.println(prof.getApellido());
				System.out.println(prof.getDireccion());
				List<CorreoElectronico> listaEmail =prof.getCorreosElectronicos();
				System.out.println("Emails:");
				for (CorreoElectronico l : listaEmail){
					System.out.println(l.getEmail());
				}	
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void testObtenerProfesoresLazy(){
		try {
			List<Profesor> lista = dao.obtenerTodos();
			System.out.println("Datos del Profesor:");
			for (Profesor prof : lista){
				System.out.println(prof.getNombre());
				System.out.println(prof.getApellido());
				System.out.println(prof.getDireccion());
				List<CorreoElectronico> listaEmail = daoEmail.obtenerCorreosbyProfesor(prof) ;
				System.out.println("Emails:");
				for (CorreoElectronico l : listaEmail){
					System.out.println(l.getEmail());
				}	
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	*/
}
